/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ecom.dao;

import ecom.exception.DataAccessLayerException;
import ecom.entity.Country;
import java.util.Currency;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.criterion.Expression;

/**
 *
 * @author
 */
public class CountryDAO extends AbstractDAO{
    
    private static final String LOCAL_ISO = "localIso";

    public CountryDAO() {
    }

     /**
     * Créer un Country dans la base de données
     * @param country
     */
    public void create(Country country) throws DataAccessLayerException {
        super.saveOrUpdate(country);
    }


    /**
     * Supprimer un country de la base de données
     * @param country Country à supprimer
     */
    public void delete(Country country) throws DataAccessLayerException {
        super.delete(country);
    }

    /**
     * Recherche un Country par sa clé primaire
     * @param id id du Country
     * @return Country Retourne un Country
     */
    public Country find(Integer id) throws DataAccessLayerException {
        return (Country) super.find(Country.class, id);
    }

    /**
     * Met à jour un country
     * @param country Country à mettre à jour
     */
    public void update(Country country) throws DataAccessLayerException {
        super.saveOrUpdate(country);
    }

    /**
     * Recherche tous les Country de la base de données
     * @return List<Country> Retourne une liste de Country
     */
    public List<Country> findAll() throws DataAccessLayerException{
        return super.findAll(Country.class);
    }
    
    public Country findByLocalIso (String localIso) {
        Country country = null;
        startOperation();
        Criteria crit = session.createCriteria(Country.class);
        crit.add(Expression.eq(LOCAL_ISO, localIso));
        country = (Country) crit.uniqueResult();
        this.closeSession();
        return country;
    }

}
